<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateArticlesTable extends Migration
{
    /**
     * Run the migrations.
     * 创建文章表，存储博客文章的详细信息。
     */
    public function up()
    {
        Schema::create('articles', function (Blueprint $table) {
            $table->id(); // 主键，自增ID
            $table->string('title'); // 文章标题
            $table->string('slug')->unique(); // 文章别名，URL 友好，如"laravel-tutorial"
            $table->longText('content'); // 文章内容，存储 Markdown 或 HTML
            $table->text('summary')->nullable(); // 文章摘要，150-300 字，列表展示用
            $table->string('cover', 500)->nullable(); // 封面图片 URL，如"storage/covers/xxx.jpg"
            $table->foreignId('user_id')->nullable()->constrained()->onDelete('set null'); // 外键，关联用户表
            $table->foreignId('category_id')->nullable()->constrained()->onDelete('restrict'); // 外键，关联分类表
            $table->enum('status', ['draft', 'published'])->default('draft'); // 文章状态：草稿或已发布
            $table->unsignedInteger('view_count')->default(0); // 阅读量统计
            $table->unsignedInteger('like_count')->default(0); // 点赞数统计
            $table->boolean('is_top')->default(false); // 是否置顶
            $table->string('seo_title')->nullable(); // SEO标题
            $table->text('seo_description')->nullable(); // SEO描述
            $table->text('seo_keywords')->nullable(); // SEO关键词
            $table->timestamp('published_at')->nullable(); // 发布时间，发布时设置
            $table->timestamps(); // 创建时间和更新时间
            $table->index('status'); // 索引，优化按状态查询
            $table->index('published_at'); // 索引，优化按发布时间排序
            $table->index('is_top'); // 索引，优化置顶查询
        });
    }

    /**
     * Reverse the migrations.
     * 删除文章表。
     */
    public function down()
    {
        Schema::dropIfExists('articles');
    }
}